Android内、外存储分区&常用存储目录,getExternalStorageDirectory获取的是storage/emulated/0/ 您所在的位置:网站首页 Android文件目录、存储概念storagesdcard0 sdcard Android内、外存储分区&常用存储目录,getExternalStorageDirectory获取的是storage/emulated/0/

Android内、外存储分区&常用存储目录,getExternalStorageDirectory获取的是storage/emulated/0/

2024-07-17 08:07| 来源: 网络整理| 查看: 265

目录

​​getExternalStorageDirectory获取的是storage/emulated/0/​​

​​通过Environment获取的路径​​

​​存储的”内“和“外”​​

​​应用程序cache目录​​

​​storage/emulated/0 是存储在什么地方?​​

​​android读取sdcard路径下的文件的方法​​

​​Android 在外部存储中创建文件夹​​

getExternalStorageDirectory获取的是storage/emulated/0/

你在debug 的时候通过getExternalStorageDirectory获取的是storage/emulated/0/原因是由于你的文件读取权限没有

通过Environment获取的路径

Environment.getDataDirectory().getPath() :                                   获得根目录/data 内部存储路径

Environment.getDownloadCacheDirectory().getPath()  :               获得缓存目录/cache

Environment.getExternalStorageDirectory().getPath():                  获得SD卡目录/mnt/sdcard(获取的是手机外置sd卡的路径)

Environment.getRootDirectory().getPath() :                                   获得系统目录/system

通过Context获取的路径

Context.getDatabasePath()                                                      返回通过Context.openOrCreateDatabase 创建的数据库文件

Context.getCacheDir().getPath() :                                            用于获取APP的cache目录 /data/data//cache目录

Context.getExternalCacheDir().getPath()  :                             用于获取APP的在SD卡中的cache目录/mnt/sdcard/Android/data//cache

Context.getFilesDir().getPath()  :                                             用于获取APP的files目录 /data/data//files

Context.getObbDir().getPath():                                                用于获取APPSDK中的obb目录 /mnt/sdcard/Android/obb/

Context.getPackageName() :                                                  用于获取APP的所在包目录

Context.getPackageCodePath()  :                                          来获得当前应用程序对应的 apk 文件的路径

Context.getPackageResourcePath() :                                    获取该程序的安装包路径

存储的”内“和“外”

所有Android设备都有两个文件存储区域:内部存储空间(internal Storage)和外部存储空间(external Storage)。

所以,Android系统从逻辑上,只分为"internal Storage" 与 “external Storage” 两个存储分区。

内部存储分区(internal Storage)内部存储分区,物理位置主要包括了Android系统根目录下的/data、/System、/cache等目录。

内部存储分区的特点:内部分区总是可用。它存放App私有文件,并且不可被其他App访问。 App卸载后,存储在内部分区上的该App数据将会被清除。不需要额外申请权限。

外部存储分区(external Storage):手机文件管理器能够看到的文件,包括sd卡 它有以下几个特点:外部分区并不总是可用。保存在这里的文件可能被其他程序访问。 当用户卸载app时,系统仅仅会删除external中的缓存目录(Context.getExternalCacheDir())和file目录(Context.getExternalFilesDir())下的相关文件。需要申请WRITE_EXTERNAL_STORAGE或READ_EXTERNAL_STORAGE权限。 我们在开发过程中,经常需要读取或者存储一些数据,这些数据可以存储在内部分区中,也可以存储在外部分区中,但不同的操作方式会有很大区别,我们下面来详细进行分析。

子目录 /system/app:存放rom本身附带的软件即系统软件。 /system/data:存放/system/app中,核心系统软件的数据文件信息。 /system/priv-app:存放手机厂商定制的系统级别的应用的apk文件。 /system/bin:存放系统的本地程序,里面主要是Linux系统自带的组件。 /system/media:存放一些音效、铃声、开关机动画等。

/data目录 /data目录时我们App私有数据存储的顶级目录,可以通过Environment.getDataDirectory()获取。

Environment.getDataDirectory()源码:

private static final File DIR_ANDROID_DATA = getDirectory(ENV_ANDROID_DATA, "/data"); /** * Return the user data directory. */ public static File getDataDirectory(){ return

应用程序cache目录

cache目录是我们App内部存储的缓存目录。它可以通过Context对象的getCacheDir()方法来获得,位置是通常是:/data/data//cache文件夹。如果您想暂时保留而非永久存储某些数据,则应使用特殊的缓存目录来保存这些数据。不应依赖系统为您清理这些文件,而应始终自行维护缓存文件,使其占用的空间保持在合理的限制范围内(例如 1MB)。当用户卸载您的应用时,这些文件也会随之移除。

getCacheDir()方法 Context对象的getCacheDir()方法可以获取cache目录。

ContextImpl中的源码:

@Override

public File getCacheDir() {

synchronized (mSync) {

if (mCacheDir == null) {

mCacheDir = new File(getDataDir(), "cache");

}

return ensurePrivateCacheDirExists(mCacheDir, XATTR_INODE_CACHE);

}

}

cache文件有以下几个特点需要注意: 系统将在磁盘空间不足时自动删除此目录中的文件。 系统将始终首先删除旧文件。 我们可以使用StorageManager类的相关方法更好的管理我们的删除规则。 App所占缓存空间的大小可以通过StorageManager.getCacheQuotaBytes(java.util.UUID)来获得。 超过App所分配限额的缓存空间将被优先删除,我们应该尽可能的使我们的cache空间内的文件低于限额值,这会使得我们的cache文件最大可能的减少被删除的概率。 databases目录 databases目录存放了应用程序的数据库文件,位置是通常是:/data/data//databases文件夹。

Android内、外存储分区&常用存储目录,getExternalStorageDirectory获取的是storage/emulated/0/_Android

外部存储分区的访问

 

外部存储可能是不可用的,比如遇到SD卡被拔出等情况时,因此在访问之前应对其可用性进行检查。我们可以通过执行getExternalStorageState()来查询外部存储设备的状态,若返回状态为MEDIA_MOUNTED, 则可以读写。

/sdcard 外部存储的sd卡根目录,也就是我们平时从文件管理器中能看到的最顶级目录,它的File绝对路径为:/storage/emulated/0。

访问方式 可以通过Environment类的getExternalStorageDirectory方法访问:

storage/emulated/0 是存储在什么地方?

Android内、外存储分区&常用存储目录,getExternalStorageDirectory获取的是storage/emulated/0/_android_02

​编辑

是一个文件。storage/emulated/0/其实是你的SD卡路径,里面的内容也就是卡上的内容,该路径只是个挂载点 。应该在手机的download文件里面。

它是 “模拟SD卡”(不是真实的SD卡) 这一事实。

这是引用路径,别担心。打开ddmsFileExplorer,可以在你的mnt/sdcard后面看到一列info,列里面写的就是类似于/storage/emulated/0/这个东西,然后可以在你的FileExplorer中找storage文件夹,下面就会有emulated,然后下面会有0,其实都是一样的。

android读取sdcard路径下的文件的方法

直接写文件目录 mnt/sdcard/

Android 在外部存储中创建文件夹

创建文件是先new 在create

File(video_savePath); if (!file.exists()) { // 创建文件

file.createNewFile();



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有